package hot

/**
240. 搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性：
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。

示例 1：
输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出：true

示例 2：
输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出：false
*/

// 法二代码
func searchMatrix(matrix [][]int, target int) bool {

	if matrix == nil || len(matrix) == 0 || len(matrix[0]) == 0 { //非法判断
		return false
	}

	curRow := 0                     //当前行
	curColumn := len(matrix[0]) - 1 //当前列

	//判断方向是从右上角向左下角移动下标进行判断
	for curColumn >= 0 && curRow < len(matrix) {
		if matrix[curRow][curColumn] == target {
			return true
		} else if matrix[curRow][curColumn] > target {
			curColumn--
		} else {
			curRow++
		}
	}

	return false
}
